/**
 * <copyright>
 * </copyright>
 *
 * 
 */
package OrchestrationLanguage.resource.ol.mopp;

public class OlReferenceResolverSwitch implements OrchestrationLanguage.resource.ol.IOlReferenceResolverSwitch {
	
	protected OrchestrationLanguage.resource.ol.analysis.Variable_AssignmentAssignReferenceResolver variable_AssignmentAssignReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.Variable_AssignmentAssignReferenceResolver();
	protected OrchestrationLanguage.resource.ol.analysis.Variable_DeclarationDeclareReferenceResolver variable_DeclarationDeclareReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.Variable_DeclarationDeclareReferenceResolver();
	protected OrchestrationLanguage.resource.ol.analysis.ImportReferencesReferenceResolver importReferencesReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.ImportReferencesReferenceResolver();
	protected OrchestrationLanguage.resource.ol.analysis.InternalServicesUsesReferenceResolver internalServicesUsesReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.InternalServicesUsesReferenceResolver();
	protected OrchestrationLanguage.resource.ol.analysis.CallTargetReferenceResolver callTargetReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.CallTargetReferenceResolver();
	protected OrchestrationLanguage.resource.ol.analysis.CallInputReferenceResolver callInputReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.CallInputReferenceResolver();
	protected OrchestrationLanguage.resource.ol.analysis.ArgumentAssignToReferenceResolver argumentAssignToReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.ArgumentAssignToReferenceResolver();
	protected OrchestrationLanguage.resource.ol.analysis.ArgumentAssignFromReferenceResolver argumentAssignFromReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.ArgumentAssignFromReferenceResolver();
	protected OrchestrationLanguage.resource.ol.analysis.IfElseReferenceResolver ifElseReferenceResolver = new OrchestrationLanguage.resource.ol.analysis.IfElseReferenceResolver();
	
	public OrchestrationLanguage.resource.ol.analysis.Variable_AssignmentAssignReferenceResolver getVariable_AssignmentAssignReferenceResolver() {
		return variable_AssignmentAssignReferenceResolver;
	}
	
	public OrchestrationLanguage.resource.ol.analysis.Variable_DeclarationDeclareReferenceResolver getVariable_DeclarationDeclareReferenceResolver() {
		return variable_DeclarationDeclareReferenceResolver;
	}
	
	public OrchestrationLanguage.resource.ol.analysis.ImportReferencesReferenceResolver getImportReferencesReferenceResolver() {
		return importReferencesReferenceResolver;
	}
	
	public OrchestrationLanguage.resource.ol.analysis.InternalServicesUsesReferenceResolver getInternalServicesUsesReferenceResolver() {
		return internalServicesUsesReferenceResolver;
	}
	
	public OrchestrationLanguage.resource.ol.analysis.CallTargetReferenceResolver getCallTargetReferenceResolver() {
		return callTargetReferenceResolver;
	}
	
	public OrchestrationLanguage.resource.ol.analysis.CallInputReferenceResolver getCallInputReferenceResolver() {
		return callInputReferenceResolver;
	}
	
	public OrchestrationLanguage.resource.ol.analysis.ArgumentAssignToReferenceResolver getArgumentAssignToReferenceResolver() {
		return argumentAssignToReferenceResolver;
	}
	
	public OrchestrationLanguage.resource.ol.analysis.ArgumentAssignFromReferenceResolver getArgumentAssignFromReferenceResolver() {
		return argumentAssignFromReferenceResolver;
	}
	
	public OrchestrationLanguage.resource.ol.analysis.IfElseReferenceResolver getIfElseReferenceResolver() {
		return ifElseReferenceResolver;
	}
	
	public void setOptions(java.util.Map<?, ?> options) {
		variable_AssignmentAssignReferenceResolver.setOptions(options);
		variable_DeclarationDeclareReferenceResolver.setOptions(options);
		importReferencesReferenceResolver.setOptions(options);
		internalServicesUsesReferenceResolver.setOptions(options);
		callTargetReferenceResolver.setOptions(options);
		callInputReferenceResolver.setOptions(options);
		argumentAssignToReferenceResolver.setOptions(options);
		argumentAssignFromReferenceResolver.setOptions(options);
		ifElseReferenceResolver.setOptions(options);
	}
	
	public void resolveFuzzy(String identifier, org.eclipse.emf.ecore.EObject container, org.eclipse.emf.ecore.EReference reference, int position, OrchestrationLanguage.resource.ol.IOlReferenceResolveResult<org.eclipse.emf.ecore.EObject> result) {
		if (container == null) {
			return;
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getVariable_Assignment().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Variable> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Variable>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("assign")) {
				variable_AssignmentAssignReferenceResolver.resolve(identifier, (OrchestrationLanguage.Variable_Assignment) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getVariable_Declaration().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Variable> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Variable>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("declare")) {
				variable_DeclarationDeclareReferenceResolver.resolve(identifier, (OrchestrationLanguage.Variable_Declaration) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getImport().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Module> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Module>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("references")) {
				importReferencesReferenceResolver.resolve(identifier, (OrchestrationLanguage.Import) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getInternalServices().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Service> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Service>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("uses")) {
				internalServicesUsesReferenceResolver.resolve(identifier, (OrchestrationLanguage.InternalServices) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getCall().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Process> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Process>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("target")) {
				callTargetReferenceResolver.resolve(identifier, (OrchestrationLanguage.Call) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getCall().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Argument> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Argument>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("input")) {
				callInputReferenceResolver.resolve(identifier, (OrchestrationLanguage.Call) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getArgument().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Variable> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Variable>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("assignTo")) {
				argumentAssignToReferenceResolver.resolve(identifier, (OrchestrationLanguage.Argument) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getArgument().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Variable> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Variable>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("assignFrom")) {
				argumentAssignFromReferenceResolver.resolve(identifier, (OrchestrationLanguage.Argument) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
		if (OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getIf().isInstance(container)) {
			OlFuzzyResolveResult<OrchestrationLanguage.Else> frr = new OlFuzzyResolveResult<OrchestrationLanguage.Else>(result);
			String referenceName = reference.getName();
			org.eclipse.emf.ecore.EStructuralFeature feature = container.eClass().getEStructuralFeature(referenceName);
			if (feature != null && feature instanceof org.eclipse.emf.ecore.EReference && referenceName != null && referenceName.equals("else")) {
				ifElseReferenceResolver.resolve(identifier, (OrchestrationLanguage.If) container, (org.eclipse.emf.ecore.EReference) feature, position, true, frr);
			}
		}
	}
	
	public OrchestrationLanguage.resource.ol.IOlReferenceResolver<? extends org.eclipse.emf.ecore.EObject, ? extends org.eclipse.emf.ecore.EObject> getResolver(org.eclipse.emf.ecore.EStructuralFeature reference) {
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getVariable_Assignment_Assign()) {
			return variable_AssignmentAssignReferenceResolver;
		}
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getVariable_Declaration_Declare()) {
			return variable_DeclarationDeclareReferenceResolver;
		}
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getImport_References()) {
			return importReferencesReferenceResolver;
		}
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getInternalServices_Uses()) {
			return internalServicesUsesReferenceResolver;
		}
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getCall_Target()) {
			return callTargetReferenceResolver;
		}
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getCall_Input()) {
			return callInputReferenceResolver;
		}
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getArgument_AssignTo()) {
			return argumentAssignToReferenceResolver;
		}
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getArgument_AssignFrom()) {
			return argumentAssignFromReferenceResolver;
		}
		if (reference == OrchestrationLanguage.OrchestrationLanguagePackage.eINSTANCE.getIf_Else()) {
			return ifElseReferenceResolver;
		}
		return null;
	}
	
}
